package com.baichang.taoshunda.service.impl;

import com.baichang.framework.excelption.DBException;
import com.baichang.framework.utils.RegexUtils;
import com.baichang.taoshunda.dao.ParamsDao;
import com.baichang.taoshunda.dao.TrendsTypeDao;
import com.baichang.taoshunda.entity.Params;
import com.baichang.taoshunda.service.ParamsService;
import org.apache.commons.collections.map.HashedMap;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * Created by ${wushenglu} on 2017/8/17 0017.
 */
@Service
public class ParamsServiceImpl implements ParamsService {
    @Autowired
    private ParamsDao paramsDao;


    /**
     * 接口
     * 根据参数类型，参数编号获取对应的值
     *
     * @param paramsType 参数类型
     * @param paramsId   参数编号
     *                   武圣路
     * @return
     */
    @Override
    public Map<String, Object> getParamsValue(int paramsType, int paramsId) {
        return paramsDao.getParamsValue(paramsType, paramsId);
    }

    /**
     * 查询
     */
    @Override
    public Params getParamsInfo() {

        return paramsDao.getParamsInfo();
    }

    /**
     * 修改关于我们
     *
     * @param id
     * @param name
     * @param value
     * @param remark
     * @return
     */
    @Override
    public int updateParams(int id, String name, String value, String remark) throws DBException {
        Map map = new HashedMap();
        map.put("name", name);
        map.put("value", value);
        String newValue = "";
        Document document = Jsoup.parse(remark);
        Elements telDivs = document.select("span");
        System.out.println(telDivs.size());
        for (int i = 0; i < telDivs.size(); i++) {
            Element span = telDivs.get(i);
            String spanText = span.text();
            if (checkCellphone(spanText) || checkTelephon400(spanText) || checkTelephon400(spanText)) {
                String aHtml = "<a href='tel:" + spanText + "'>" + spanText + "</a>";
                span.html(aHtml);
            }
        }
        newValue = document.body().html();

        map.put("remark", newValue);
        return paramsDao.update(map, id);
    }

    /**
     * 验证手机号码
     * <p>
     * 移动号码段:139、138、137、136、135、134、150、151、152、157、158、159、182、183、187、188、147
     * 联通号码段:130、131、132、136、185、186、145
     * 电信号码段:133、153、180、189
     *
     * @param cellphone
     * @return
     */
    public static boolean checkCellphone(String cellphone) {
        String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$";
        return RegexUtils.matcher(cellphone, regex);
    }

    /**
     * 验证固话号码
     *
     * @param telephone
     * @return
     */
    public static boolean checkTelephone(String telephone) {
        String regex = "^(0\\d{2}-\\d{8}(-\\d{1,4})?)|(0\\d{3}-\\d{7,8}(-\\d{1,4})?)$";
        return RegexUtils.matcher(telephone, regex);
    }

    /**
     * 验证400
     *
     * @param telephone
     * @return
     */
    public static boolean checkTelephon400(String telephone) {
        String regex = "^400[0-9]{7}$";
        return RegexUtils.matcher(telephone, regex);
    }

}
